<?php
/**
*  \file Autoload.php 
* Le fichier Autoload.php contiens 3 fonctions  :
* 1) RegisterPath("chemin/ver/la/class") qui prend en paramètre les chemins vers les classes à charger et les enregistre dans le tableau $path pour être ensuite utiliser par ChargerClass.  
* 2) ChargerClass ("class_name") qui prend en paramètre le nom de la classe à charger ce qui permet de minimiser les require et ainsi d'alléger le code source.
*     Cette fonction va tester si, dans les chemins renseignés, il existe un chemin vers la classe demandée, si le chemin existe il charge la classe.
*     Cette fonction génére un fichier  .log renseignant tous les chemins testés et le résultat obtenu. Celui ci est stocké dans log/ et se nomme Autoload.log
*     Si l'on a fait appel à ce fichier  dans le programme principal cela permet de limiter les require() à 1 (celui de Autoload.php) .
* 3) ecrire_log("votre_text_de_log", "nom_du_fichier") qui prend en paramètre un texte à écrire dans le fichier de .log ainsi que le nom à mettre avant le .log .
*     Lorsqu'elle est appelée cette fonction va écrire le texte qui lui est indiqué à la fin du fichier étant mis en paramètre (si il n'existe pas il est crée). 
*     
*     Attention!!!  Si les fichier de log ne sont pas réinitialiser  la fontion écrira à la suite des précédent. 
*     Cette réinitialisation peut être fait dans le programme principale à l'aide de:  unlink("log/nom_du_fichier.log") ;
*/

 function ChargerClass($class_name) {
	for ($k=0 ; $k<$GLOBALS['i'] ; $k++) {
        ecrire_log( "recherche de: ".$GLOBALS['path'][$k].$class_name . '.php', "Autoload") ;
		if (file_exists($GLOBALS['path'][$k].$class_name . '.php')) {
			ecrire_log( " . . . .  OK! "."\n", "Autoload" );
            require $GLOBALS['path'][$k].$class_name . '.php';
			break;
		} else {
            ecrire_log( " . . . .  erreur! "."\n", "Autoload" ); 
        }
	}
}
spl_autoload_register('ChargerClass');

$i=0;
$path=array();
function RegisterPath($path_name) {
	$GLOBALS['path'][$GLOBALS['i']]=$path_name;
	$GLOBALS['i']++;
}

function ecrire_log($txt, $nom){
        $Fl = fopen("log/$nom.log",'a+'); // ouvrir le fichier ou le créer
        fseek($Fl,SEEK_END); // poser le point de lecture à la fin du fichier
        fputs($Fl,$txt); // ecrire ce texte
        fclose($Fl); //fermer le fichier
}

